/*
 * @Author: fengxx
 * @Date: 2025-08-25 17:49:57
 * @LastEditors: fengxx
 * @LastEditTime: 2025-08-28 09:09:13
 */
// class A {
//   private _age: number = 1;
//   protected aa: string = "kkk";
//   constructor(public name: string) {}
//   get age(): number {
//     return this._age;
//   }
export {};
//   set age(value: number) {
//     this._age = value;
//   }
//   p(): void {
//     console.log(this.name, this.age);
//   }
// }
// class B extends A {
//   kk: number;
//   constructor(name: string, kk: number) {
//     super(name);
//     this.kk = kk;
//     console.log(this.aa);
//   }
//   set _aa(value: string) {
//     this.aa = value;
//   }
//   get _aa(): string {
//     return this.aa;
//   }
// }
// const a = new A("dgg");
// a.age = 5;
// a.p();
// let b = new B("lll", 1);
// b._aa = "lolo";
// console.log(b._aa);
// abstract class A {
//   readonly b: string = "dgdg";
//   private a: string;
//   constructor(a: string) {
//     this.b = a;
//     this.a = a;
//   }
//   abstract aa(): void;
// }
// class B extends A {
//   constructor(a: string) {
//     super(a);
//   }
//   aa(): void {
//     console.log("kikik");
//   }
// }
// // let a = new A("dgfd");
// // a.aa();
// let b = new B("lllll");
// b.aa();
// interface A {
//   k: string;
//   a(): void;
// }
// class B implements A {
//   k: string = "llll";
//   a(): void {}
// }
// const fn = (array: number[], ...items: any[]): any[] => {
//   console.log(array, items);
//   return items;
// };
// let a: number[] = [1, 2, 3];
// console.log(fn(a, "4", "5", "6"));
// function fn(params: number): void;
// function fn(params: string, params2: number): void;
// function fn(params: any, params2?: any): void {
//   console.log(params);
//   console.log(params2);
// }
// fn(123);
// fn("123", 456);
// let b: Boolean = new Boolean(1);
// console.log(b);
// let n: Number = new Number(true);
// console.log(n);
// let s: String = new String("哔哩哔哩关注⼩满zs");
// console.log(s);
// let d: Date = new Date();
// console.log(d);
// let r: RegExp = /^1/;
// console.log(r);
// let e: Error = new Error("error!");
// console.log(e);
// let div: HTMLElement = document.getElementById("kk") as HTMLDivElement;
// div.innerText = "jjjj";
// class Product {
//   private _name: string;
//   private _price: number;
//   private _quantity: number;
//   constructor(name: string, price: number, quantity: number) {
//     this._name = name;
//     this._price = price;
//     this._quantity = quantity;
//   }
//   get name(): string {
//     return this._name;
//   }
//   set name(value: string) {
//     this._name = value;
//   }
//   get price(): number {
//     return this._price;
//   }
//   set price(value: number) {
//     this._price = value;
//   }
//   get quantity(): number {
//     return this._quantity;
//   }
//   set quantity(value: number) {
//     this._quantity = value;
//   }
//   private totalPrice(): number {
//     return this._price * this._quantity;
//   }
//   productInfo(): void {
//     console.log(
//       `商品${this._name}的单价为${this._price}，购买数量为${
//         this._quantity
//       }，总价为${this.totalPrice()}`
//     );
//   }
// }
// class ShoppingCart {
//   products: Product[];
//   static count: number;
//   constructor(products: Product[]) {
//     this.products = products;
//     ShoppingCart.count = products.reduce((total: number, product: Product) => {
//       return total + product.quantity;
//     }, 0);
//   }
//   addProducts(product: Product) {
//     this.products.push(product);
//     ShoppingCart.count += product.quantity;
//   }
//   delProduct(index: number) {
//     const currentArr: Product[] = this.products.filter(
//       (item, idx) => idx == index
//     );
//     const currentCount = currentArr[0]?.quantity || 0;
//     this.products.splice(index, 1);
//     ShoppingCart.count -= currentCount;
//   }
//   sumPrice(): number {
//     let sum: number = 0;
//     this.products.forEach((item: Product) => {
//       sum += item.price * item.quantity;
//     });
//     return sum;
//   }
//   static totalQuantity(): number {
//     return this.count;
//   }
//   get _products(): Product[] {
//     return this.products;
//   }
//   set _products(value: Product[]) {
//     this.products = value;
//   }
// }
// let product1: Product = new Product("衣服", 30, 10);
// let product2: Product = new Product("水果", 5, 100);
// product1.productInfo();
// product2.productInfo();
// let cart: ShoppingCart = new ShoppingCart([product1, product2]);
// console.log(cart.sumPrice(), ShoppingCart.totalQuantity());
// cart.addProducts(product1);
// console.log(cart.sumPrice(), ShoppingCart.totalQuantity());
// enum Direction {
//   Up,
//   Down,
//   Left,
//   Right,
// }
// let a: Direction = Direction.Down;
// console.log(Direction[a]);
// interface A {
//   type: "foo";
// }
// interface B {
//   type: "bar";
// }
// interface C {
//   type: "bizz";
// }
// interface D {
//   type: "lll";
// }
// type All = A | B;
// function handleValue(val: All) {
//   switch (val.type) {
//     case "foo":
//       break;
//     case "bar":
//       break;
//     default:
//       //兜底逻辑 ⼀般是不会进⼊这⼉如果进来了就是程序异常了
//       const exhaustiveCheck: never = val;
//       break;
//   }
// }
// const symbol1 = Symbol("666");
// const symbol2 = Symbol("777");
// const obj1 = {
//   [symbol1]: "⼩满",
//   [symbol2]: "⼆蛋",
//   age: 19,
//   sex: "⼥",
// };
// // 1 for in 遍历
// for (const key in obj1) {
//   // 注意在console看key,是不是没有遍历到symbol1
//   console.log(key);
// }
// console.log(Object.keys(obj1));
// // 3 getOwnPropertyNames
// console.log(Object.getOwnPropertyNames(obj1));
// // 4 JSON.stringfy
// console.log(JSON.stringify(obj1));
// Object.getOwnPropertySymbols(obj1);
// console.log(Object.getOwnPropertySymbols(obj1));
// Reflect.ownKeys(obj1);
// console.log(Reflect.ownKeys(obj1));
// var arr = [1, 2, 3, 4];
// let iterator = arr[Symbol.iterator]();
// console.log(iterator.next()); //{ value: 1, done: false }
// console.log(iterator.next()); //{ value: 2, done: false }
// console.log(iterator.next()); //{ value: 3, done: false }
// console.log(iterator.next()); //{ value: 4, done: false }
// console.log(iterator.next()); //{ value: undefined, done: true }
// interface Item {
//   age: number;
//   name: string;
// }
// const array: Array<Item> = [
//   { age: 123, name: "1" },
//   { age: 123, name: "2" },
//   { age: 123, name: "3" },
// ];
// type mapTypes = string | number;
// const map: Map<mapTypes, mapTypes> = new Map();
// map.set("1", "王爷");
// map.set("2", "陆北");
// const obj = {
//   aaa: 123,
//   bbb: 456,
// };
// let set: Set<number> = new Set([1, 2, 3, 4, 5, 6]);
// // let it:Iterator<Item> = array[Symbol.iterator]()
// const gen = (erg: any): void => {
//   let it: Iterator<any> = erg[Symbol.iterator]();
//   let next: any = { done: false };
//   while (!next.done) {
//     next = it.next();
//     if (!next.done) {
//       console.log(next.value);
//     }
//   }
// };
// gen(array);
